<!-- HTML header for doxygen 1.8.6-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<title>OpenCV: cv::Affine3&lt; T &gt; Class Template Reference</title>
<link href="../../opencv.ico" rel="shortcut icon" type="image/x-icon" />
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../jquery.js"></script>
<script type="text/javascript" src="../../dynsections.js"></script>
<script type="text/javascript" src="../../tutorial-utils.js"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../../search/searchdata.js"></script>
<script type="text/javascript" src="../../search/search.js"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
//<![CDATA[
MathJax.Hub.Config(
{
  TeX: {
      Macros: {
          matTT: [ "\\[ \\left|\\begin{array}{ccc} #1 & #2 & #3\\\\ #4 & #5 & #6\\\\ #7 & #8 & #9 \\end{array}\\right| \\]", 9],
          fork: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ \\end{array} \\right.", 4],
          forkthree: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ #5 & \\mbox{#6}\\\\ \\end{array} \\right.", 6],
          forkfour: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ #5 & \\mbox{#6}\\\\ #7 & \\mbox{#8}\\\\ \\end{array} \\right.", 8],
          vecthree: ["\\begin{bmatrix} #1\\\\ #2\\\\ #3 \\end{bmatrix}", 3],
          vecthreethree: ["\\begin{bmatrix} #1 & #2 & #3\\\\ #4 & #5 & #6\\\\ #7 & #8 & #9 \\end{bmatrix}", 9],
          cameramatrix: ["#1 = \\begin{bmatrix} f_x & 0 & c_x\\\\ 0 & f_y & c_y\\\\ 0 & 0 & 1 \\end{bmatrix}", 1],
          distcoeffs: ["(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \\tau_x, \\tau_y]]]]) \\text{ of 4, 5, 8, 12 or 14 elements}"],
          distcoeffsfisheye: ["(k_1, k_2, k_3, k_4)"],
          hdotsfor: ["\\dots", 1],
          mathbbm: ["\\mathbb{#1}", 1],
          bordermatrix: ["\\matrix{#1}", 1]
      }
  }
}
);
//]]>
</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css" />
<link href="../../stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<!--#include virtual="/google-search.html"-->
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="../../opencv-logo-small.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">OpenCV
   &#160;<span id="projectnumber">4.5.2</span>
   </div>
   <div id="projectbrief">Open Source Computer Vision</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<script type="text/javascript" src="../../menudata.js"></script>
<script type="text/javascript" src="../../menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('../../',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="../../d2/d75/namespacecv.html">cv</a></li><li class="navelem"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html">Affine3</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="../../d9/d05/classcv_1_1Affine3-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">cv::Affine3&lt; T &gt; Class Template Reference<div class="ingroups"><a class="el" href="../../d0/de1/group__core.html">Core functionality</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p>Affine transform.  
 <a href="../../dd/d99/classcv_1_1Affine3.html#details">More...</a></p>

<p><code>#include &lt;opencv2/core/affine.hpp&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a2730bcb4f97187be1ceda0a58994bb53"><td class="memItemLeft" align="right" valign="top">typedef T&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a2730bcb4f97187be1ceda0a58994bb53">float_type</a></td></tr>
<tr class="separator:a2730bcb4f97187be1ceda0a58994bb53"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37ca518be694a545a9572a3e5546e9e8"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="../../de/de1/classcv_1_1Matx.html">Matx</a>&lt; <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a2730bcb4f97187be1ceda0a58994bb53">float_type</a>, 3, 3 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a37ca518be694a545a9572a3e5546e9e8">Mat3</a></td></tr>
<tr class="separator:a37ca518be694a545a9572a3e5546e9e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9466d60cebb8d94b8bf23e52aa89b95b"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="../../de/de1/classcv_1_1Matx.html">Matx</a>&lt; <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a2730bcb4f97187be1ceda0a58994bb53">float_type</a>, 4, 4 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a9466d60cebb8d94b8bf23e52aa89b95b">Mat4</a></td></tr>
<tr class="separator:a9466d60cebb8d94b8bf23e52aa89b95b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab44b397d8cb04e63556cae820ffdb914"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="../../d6/dcf/classcv_1_1Vec.html">Vec</a>&lt; <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a2730bcb4f97187be1ceda0a58994bb53">float_type</a>, 3 &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ab44b397d8cb04e63556cae820ffdb914">Vec3</a></td></tr>
<tr class="separator:ab44b397d8cb04e63556cae820ffdb914"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a116afdeed21ac6a341033ff38a01b4a2"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a116afdeed21ac6a341033ff38a01b4a2">Affine3</a> ()</td></tr>
<tr class="memdesc:a116afdeed21ac6a341033ff38a01b4a2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor. It represents a 4x4 identity matrix.  <a href="#a116afdeed21ac6a341033ff38a01b4a2">More...</a><br /></td></tr>
<tr class="separator:a116afdeed21ac6a341033ff38a01b4a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af63d22662170937a4535f26dc8580023"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#af63d22662170937a4535f26dc8580023">Affine3</a> (const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a9466d60cebb8d94b8bf23e52aa89b95b">Mat4</a> &amp;affine)</td></tr>
<tr class="memdesc:af63d22662170937a4535f26dc8580023"><td class="mdescLeft">&#160;</td><td class="mdescRight">Augmented affine matrix.  <a href="#af63d22662170937a4535f26dc8580023">More...</a><br /></td></tr>
<tr class="separator:af63d22662170937a4535f26dc8580023"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abadd37c946a0da674172b0195aa711cf"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#abadd37c946a0da674172b0195aa711cf">Affine3</a> (const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a37ca518be694a545a9572a3e5546e9e8">Mat3</a> &amp;R, const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ab44b397d8cb04e63556cae820ffdb914">Vec3</a> &amp;t=<a class="el" href="../../d6/dcf/classcv_1_1Vec.html#a86371c4948f9dbb4496cfd7a559c51b4">Vec3::all</a>(0))</td></tr>
<tr class="separator:abadd37c946a0da674172b0195aa711cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a51046d0d1857a1a99a19e145321fe9b9"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a51046d0d1857a1a99a19e145321fe9b9">Affine3</a> (const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ab44b397d8cb04e63556cae820ffdb914">Vec3</a> &amp;<a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a2b55e155790f606db5eb913bd350645b">rvec</a>, const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ab44b397d8cb04e63556cae820ffdb914">Vec3</a> &amp;t=<a class="el" href="../../d6/dcf/classcv_1_1Vec.html#a86371c4948f9dbb4496cfd7a559c51b4">Vec3::all</a>(0))</td></tr>
<tr class="separator:a51046d0d1857a1a99a19e145321fe9b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a799ec5a3979508b9bb5d201b8c52d066"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a799ec5a3979508b9bb5d201b8c52d066">Affine3</a> (const <a class="el" href="../../d3/d63/classcv_1_1Mat.html">Mat</a> &amp;data, const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ab44b397d8cb04e63556cae820ffdb914">Vec3</a> &amp;t=<a class="el" href="../../d6/dcf/classcv_1_1Vec.html#a86371c4948f9dbb4496cfd7a559c51b4">Vec3::all</a>(0))</td></tr>
<tr class="separator:a799ec5a3979508b9bb5d201b8c52d066"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab6a2e02d633e7e2a074451f503320b5f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ab6a2e02d633e7e2a074451f503320b5f">Affine3</a> (const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a2730bcb4f97187be1ceda0a58994bb53">float_type</a> *vals)</td></tr>
<tr class="memdesc:ab6a2e02d633e7e2a074451f503320b5f"><td class="mdescLeft">&#160;</td><td class="mdescRight">From 16-element array.  <a href="#ab6a2e02d633e7e2a074451f503320b5f">More...</a><br /></td></tr>
<tr class="separator:ab6a2e02d633e7e2a074451f503320b5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0e9ce77d38d4f5c4060a7b2df93df42a"><td class="memTemplParams" colspan="2">template&lt;typename Y &gt; </td></tr>
<tr class="memitem:a0e9ce77d38d4f5c4060a7b2df93df42a"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html">Affine3</a>&lt; Y &gt;&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a0e9ce77d38d4f5c4060a7b2df93df42a">cast</a> () const</td></tr>
<tr class="separator:a0e9ce77d38d4f5c4060a7b2df93df42a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82684a32c8dee80e0a82d992eb5a83fa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html">Affine3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a82684a32c8dee80e0a82d992eb5a83fa">concatenate</a> (const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">Affine3</a> &amp;affine) const</td></tr>
<tr class="memdesc:a82684a32c8dee80e0a82d992eb5a83fa"><td class="mdescLeft">&#160;</td><td class="mdescRight">a.concatenate(affine) is equivalent to affine * a;  <a href="#a82684a32c8dee80e0a82d992eb5a83fa">More...</a><br /></td></tr>
<tr class="separator:a82684a32c8dee80e0a82d992eb5a83fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac4a16f4a77037c883dbbc2a4f617ee4f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html">Affine3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ac4a16f4a77037c883dbbc2a4f617ee4f">inv</a> (int method=<a class="el" href="../../d2/de8/group__core__array.html#ggaaf9ea5dcc392d5ae04eacb9920b9674ca523b676c90c7a1d2841b1267ba9ba614">cv::DECOMP_SVD</a>) const</td></tr>
<tr class="separator:ac4a16f4a77037c883dbbc2a4f617ee4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aba3b127ac7c7bd3d99d533a59f22242a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#aba3b127ac7c7bd3d99d533a59f22242a">linear</a> (const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a37ca518be694a545a9572a3e5546e9e8">Mat3</a> &amp;L)</td></tr>
<tr class="separator:aba3b127ac7c7bd3d99d533a59f22242a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a914f41895b8a246232db4a186b70d480"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a37ca518be694a545a9572a3e5546e9e8">Mat3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a914f41895b8a246232db4a186b70d480">linear</a> () const</td></tr>
<tr class="separator:a914f41895b8a246232db4a186b70d480"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5828e816d1b22aef71ddacbdd364f68e"><td class="memTemplParams" colspan="2">template&lt;typename Y &gt; </td></tr>
<tr class="memitem:a5828e816d1b22aef71ddacbdd364f68e"><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a5828e816d1b22aef71ddacbdd364f68e">operator Affine3&lt; Y &gt;</a> () const</td></tr>
<tr class="separator:a5828e816d1b22aef71ddacbdd364f68e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a990d571a479b9b336f30c259fb74d18c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html">Affine3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a990d571a479b9b336f30c259fb74d18c">rotate</a> (const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a37ca518be694a545a9572a3e5546e9e8">Mat3</a> &amp;R) const</td></tr>
<tr class="memdesc:a990d571a479b9b336f30c259fb74d18c"><td class="mdescLeft">&#160;</td><td class="mdescRight">a.rotate(R) is equivalent to Affine(R, 0) * a;  <a href="#a990d571a479b9b336f30c259fb74d18c">More...</a><br /></td></tr>
<tr class="separator:a990d571a479b9b336f30c259fb74d18c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a771e0532e18299b79c922ddf77f2e362"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html">Affine3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a771e0532e18299b79c922ddf77f2e362">rotate</a> (const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ab44b397d8cb04e63556cae820ffdb914">Vec3</a> &amp;<a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a2b55e155790f606db5eb913bd350645b">rvec</a>) const</td></tr>
<tr class="memdesc:a771e0532e18299b79c922ddf77f2e362"><td class="mdescLeft">&#160;</td><td class="mdescRight">a.rotate(rvec) is equivalent to Affine(rvec, 0) * a;  <a href="#a771e0532e18299b79c922ddf77f2e362">More...</a><br /></td></tr>
<tr class="separator:a771e0532e18299b79c922ddf77f2e362"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae264b90743372dac60643984ebed342e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ae264b90743372dac60643984ebed342e">rotation</a> (const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a37ca518be694a545a9572a3e5546e9e8">Mat3</a> &amp;R)</td></tr>
<tr class="separator:ae264b90743372dac60643984ebed342e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acfe7474211770799f56deb8b81d829f5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#acfe7474211770799f56deb8b81d829f5">rotation</a> (const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ab44b397d8cb04e63556cae820ffdb914">Vec3</a> &amp;<a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a2b55e155790f606db5eb913bd350645b">rvec</a>)</td></tr>
<tr class="separator:acfe7474211770799f56deb8b81d829f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a755e92ce3d3af6e8599b2032a2c7ea05"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a755e92ce3d3af6e8599b2032a2c7ea05">rotation</a> (const <a class="el" href="../../d3/d63/classcv_1_1Mat.html">Mat</a> &amp;data)</td></tr>
<tr class="separator:a755e92ce3d3af6e8599b2032a2c7ea05"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a6b70508a7d7fd7725696852da7a20c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a37ca518be694a545a9572a3e5546e9e8">Mat3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a6a6b70508a7d7fd7725696852da7a20c">rotation</a> () const</td></tr>
<tr class="separator:a6a6b70508a7d7fd7725696852da7a20c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b55e155790f606db5eb913bd350645b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ab44b397d8cb04e63556cae820ffdb914">Vec3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a2b55e155790f606db5eb913bd350645b">rvec</a> () const</td></tr>
<tr class="separator:a2b55e155790f606db5eb913bd350645b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11d9cdc588a9c08c0c1c205a872663fd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html">Affine3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a11d9cdc588a9c08c0c1c205a872663fd">translate</a> (const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ab44b397d8cb04e63556cae820ffdb914">Vec3</a> &amp;t) const</td></tr>
<tr class="memdesc:a11d9cdc588a9c08c0c1c205a872663fd"><td class="mdescLeft">&#160;</td><td class="mdescRight">a.translate(t) is equivalent to Affine(E, t) * a, where E is an identity matrix  <a href="#a11d9cdc588a9c08c0c1c205a872663fd">More...</a><br /></td></tr>
<tr class="separator:a11d9cdc588a9c08c0c1c205a872663fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0df7115f87f425839a7a3f2e4e1ed17"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#af0df7115f87f425839a7a3f2e4e1ed17">translation</a> (const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ab44b397d8cb04e63556cae820ffdb914">Vec3</a> &amp;t)</td></tr>
<tr class="separator:af0df7115f87f425839a7a3f2e4e1ed17"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a19e2decf4df4a6e72118f9ef6482d502"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ab44b397d8cb04e63556cae820ffdb914">Vec3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a19e2decf4df4a6e72118f9ef6482d502">translation</a> () const</td></tr>
<tr class="separator:a19e2decf4df4a6e72118f9ef6482d502"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:acf5d919fc383da6777f2f66746ae9466"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">Affine3</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#acf5d919fc383da6777f2f66746ae9466">Identity</a> ()</td></tr>
<tr class="memdesc:acf5d919fc383da6777f2f66746ae9466"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create an 4x4 identity transform.  <a href="#acf5d919fc383da6777f2f66746ae9466">More...</a><br /></td></tr>
<tr class="separator:acf5d919fc383da6777f2f66746ae9466"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:ad122a1f67e7b1d20fd2cb511f2fe7d5d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a9466d60cebb8d94b8bf23e52aa89b95b">Mat4</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ad122a1f67e7b1d20fd2cb511f2fe7d5d">matrix</a></td></tr>
<tr class="separator:ad122a1f67e7b1d20fd2cb511f2fe7d5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;typename T&gt;<br />
class cv::Affine3&lt; T &gt;</h3>

<p>Affine transform. </p>
<p>It represents a 4x4 homogeneous transformation matrix \(T\)</p>
<p class="formulaDsp">
\[T = \begin{bmatrix} R &amp; t\\ 0 &amp; 1\\ \end{bmatrix} \]
</p>
<p>where \(R\) is a 3x3 rotation matrix and \(t\) is a 3x1 translation vector.</p>
<p>You can specify \(R\) either by a 3x3 rotation matrix or by a 3x1 rotation vector, which is converted to a 3x3 rotation matrix by the Rodrigues formula.</p>
<p>To construct a matrix \(T\) representing first rotation around the axis \(r\) with rotation angle \(|r|\) in radian (right hand rule) and then translation by the vector \(t\), you can use</p>
<div class="fragment"><div class="line"><a class="code" href="../../d6/dcf/classcv_1_1Vec.html">cv::Vec3f</a> r, t;</div><div class="line"><a class="code" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3f</a> T(r, t);</div></div><!-- fragment --><p>If you already have the rotation matrix \(R\), then you can use</p>
<div class="fragment"><div class="line"><a class="code" href="../../de/de1/classcv_1_1Matx.html">cv::Matx33f</a> R;</div><div class="line"><a class="code" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3f</a> T(R, t);</div></div><!-- fragment --><p>To extract the rotation matrix \(R\) from \(T\), use</p>
<div class="fragment"><div class="line"><a class="code" href="../../de/de1/classcv_1_1Matx.html">cv::Matx33f</a> R = T.rotation();</div></div><!-- fragment --><p>To extract the translation vector \(t\) from \(T\), use</p>
<div class="fragment"><div class="line"><a class="code" href="../../d6/dcf/classcv_1_1Vec.html">cv::Vec3f</a> t = T.translation();</div></div><!-- fragment --><p>To extract the rotation vector \(r\) from \(T\), use</p>
<div class="fragment"><div class="line"><a class="code" href="../../d6/dcf/classcv_1_1Vec.html">cv::Vec3f</a> r = T.rvec();</div></div><!-- fragment --><p>Note that since the mapping from rotation vectors to rotation matrices is many to one. The returned rotation vector is not necessarily the one you used before to set the matrix.</p>
<p>If you have two transformations \(T = T_1 * T_2\), use</p>
<div class="fragment"><div class="line"><a class="code" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3f</a> T, T1, T2;</div><div class="line">T = T2.<a class="code" href="../../dd/d99/classcv_1_1Affine3.html#a82684a32c8dee80e0a82d992eb5a83fa">concatenate</a>(T1);</div></div><!-- fragment --><p>To get the inverse transform of \(T\), use</p>
<div class="fragment"><div class="line"><a class="code" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3f</a> T, T_inv;</div><div class="line">T_inv = T.<a class="code" href="../../dd/d99/classcv_1_1Affine3.html#ac4a16f4a77037c883dbbc2a4f617ee4f">inv</a>();</div></div><!-- fragment --> </div><h2 class="groupheader">Member Typedef Documentation</h2>
<a id="a2730bcb4f97187be1ceda0a58994bb53"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2730bcb4f97187be1ceda0a58994bb53">&#9670;&nbsp;</a></span>float_type</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">typedef T <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::<a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a2730bcb4f97187be1ceda0a58994bb53">float_type</a></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a37ca518be694a545a9572a3e5546e9e8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a37ca518be694a545a9572a3e5546e9e8">&#9670;&nbsp;</a></span>Mat3</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="../../de/de1/classcv_1_1Matx.html">Matx</a>&lt;<a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a2730bcb4f97187be1ceda0a58994bb53">float_type</a>, 3, 3&gt; <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::<a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a37ca518be694a545a9572a3e5546e9e8">Mat3</a></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a9466d60cebb8d94b8bf23e52aa89b95b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9466d60cebb8d94b8bf23e52aa89b95b">&#9670;&nbsp;</a></span>Mat4</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="../../de/de1/classcv_1_1Matx.html">Matx</a>&lt;<a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a2730bcb4f97187be1ceda0a58994bb53">float_type</a>, 4, 4&gt; <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::<a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a9466d60cebb8d94b8bf23e52aa89b95b">Mat4</a></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ab44b397d8cb04e63556cae820ffdb914"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab44b397d8cb04e63556cae820ffdb914">&#9670;&nbsp;</a></span>Vec3</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">typedef <a class="el" href="../../d6/dcf/classcv_1_1Vec.html">Vec</a>&lt;<a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a2730bcb4f97187be1ceda0a58994bb53">float_type</a>, 3&gt; <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::<a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ab44b397d8cb04e63556cae820ffdb914">Vec3</a></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a116afdeed21ac6a341033ff38a01b4a2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a116afdeed21ac6a341033ff38a01b4a2">&#9670;&nbsp;</a></span>Affine3() <span class="overload">[1/6]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::<a class="el" href="../../dd/d99/classcv_1_1Affine3.html">Affine3</a> </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Default constructor. It represents a 4x4 identity matrix. </p>

</div>
</div>
<a id="af63d22662170937a4535f26dc8580023"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af63d22662170937a4535f26dc8580023">&#9670;&nbsp;</a></span>Affine3() <span class="overload">[2/6]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::<a class="el" href="../../dd/d99/classcv_1_1Affine3.html">Affine3</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a9466d60cebb8d94b8bf23e52aa89b95b">Mat4</a> &amp;&#160;</td>
          <td class="paramname"><em>affine</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Augmented affine matrix. </p>

</div>
</div>
<a id="abadd37c946a0da674172b0195aa711cf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abadd37c946a0da674172b0195aa711cf">&#9670;&nbsp;</a></span>Affine3() <span class="overload">[3/6]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::<a class="el" href="../../dd/d99/classcv_1_1Affine3.html">Affine3</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a37ca518be694a545a9572a3e5546e9e8">Mat3</a> &amp;&#160;</td>
          <td class="paramname"><em>R</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ab44b397d8cb04e63556cae820ffdb914">Vec3</a> &amp;&#160;</td>
          <td class="paramname"><em>t</em> = <code><a class="el" href="../../d6/dcf/classcv_1_1Vec.html#a86371c4948f9dbb4496cfd7a559c51b4">Vec3::all</a>(0)</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The resulting 4x4 matrix is</p>
<p class="formulaDsp">
\[ \begin{bmatrix} R &amp; t\\ 0 &amp; 1\\ \end{bmatrix} \]
</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">R</td><td>3x3 rotation matrix. </td></tr>
    <tr><td class="paramname">t</td><td>3x1 translation vector. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a51046d0d1857a1a99a19e145321fe9b9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a51046d0d1857a1a99a19e145321fe9b9">&#9670;&nbsp;</a></span>Affine3() <span class="overload">[4/6]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::<a class="el" href="../../dd/d99/classcv_1_1Affine3.html">Affine3</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ab44b397d8cb04e63556cae820ffdb914">Vec3</a> &amp;&#160;</td>
          <td class="paramname"><em>rvec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ab44b397d8cb04e63556cae820ffdb914">Vec3</a> &amp;&#160;</td>
          <td class="paramname"><em>t</em> = <code><a class="el" href="../../d6/dcf/classcv_1_1Vec.html#a86371c4948f9dbb4496cfd7a559c51b4">Vec3::all</a>(0)</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Rodrigues vector.</p>
<p>The last row of the current matrix is set to [0,0,0,1].</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">rvec</td><td>3x1 rotation vector. Its direction indicates the rotation axis and its length indicates the rotation angle in radian (using right hand rule). </td></tr>
    <tr><td class="paramname">t</td><td>3x1 translation vector. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a799ec5a3979508b9bb5d201b8c52d066"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a799ec5a3979508b9bb5d201b8c52d066">&#9670;&nbsp;</a></span>Affine3() <span class="overload">[5/6]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::<a class="el" href="../../dd/d99/classcv_1_1Affine3.html">Affine3</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../d3/d63/classcv_1_1Mat.html">Mat</a> &amp;&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ab44b397d8cb04e63556cae820ffdb914">Vec3</a> &amp;&#160;</td>
          <td class="paramname"><em>t</em> = <code><a class="el" href="../../d6/dcf/classcv_1_1Vec.html#a86371c4948f9dbb4496cfd7a559c51b4">Vec3::all</a>(0)</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Combines all constructors above. Supports 4x4, 3x4, 3x3, 1x3, 3x1 sizes of data matrix.</p>
<p>The last row of the current matrix is set to [0,0,0,1] when data is not 4x4.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">data</td><td>1-channel matrix. when it is 4x4, it is copied to the current matrix and t is not used. When it is 3x4, it is copied to the upper part 3x4 of the current matrix and t is not used. When it is 3x3, it is copied to the upper left 3x3 part of the current matrix. When it is 3x1 or 1x3, it is treated as a rotation vector and the Rodrigues formula is used to compute a 3x3 rotation matrix. </td></tr>
    <tr><td class="paramname">t</td><td>3x1 translation vector. It is used only when data is neither 4x4 nor 3x4. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="ab6a2e02d633e7e2a074451f503320b5f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab6a2e02d633e7e2a074451f503320b5f">&#9670;&nbsp;</a></span>Affine3() <span class="overload">[6/6]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::<a class="el" href="../../dd/d99/classcv_1_1Affine3.html">Affine3</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a2730bcb4f97187be1ceda0a58994bb53">float_type</a> *&#160;</td>
          <td class="paramname"><em>vals</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">explicit</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>From 16-element array. </p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a0e9ce77d38d4f5c4060a7b2df93df42a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0e9ce77d38d4f5c4060a7b2df93df42a">&#9670;&nbsp;</a></span>cast()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
<div class="memtemplate">
template&lt;typename Y &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html">Affine3</a>&lt;Y&gt; <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::cast </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a82684a32c8dee80e0a82d992eb5a83fa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a82684a32c8dee80e0a82d992eb5a83fa">&#9670;&nbsp;</a></span>concatenate()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html">Affine3</a> <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::concatenate </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">Affine3</a>&lt; T &gt; &amp;&#160;</td>
          <td class="paramname"><em>affine</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>a.concatenate(affine) is equivalent to affine * a; </p>

</div>
</div>
<a id="acf5d919fc383da6777f2f66746ae9466"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acf5d919fc383da6777f2f66746ae9466">&#9670;&nbsp;</a></span>Identity()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">Affine3</a> <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::Identity </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Create an 4x4 identity transform. </p>

</div>
</div>
<a id="ac4a16f4a77037c883dbbc2a4f617ee4f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac4a16f4a77037c883dbbc2a4f617ee4f">&#9670;&nbsp;</a></span>inv()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html">Affine3</a> <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::inv </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>method</em> = <code><a class="el" href="../../d2/de8/group__core__array.html#ggaaf9ea5dcc392d5ae04eacb9920b9674ca523b676c90c7a1d2841b1267ba9ba614">cv::DECOMP_SVD</a></code></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the inverse of the current matrix. </dd></dl>

</div>
</div>
<a id="aba3b127ac7c7bd3d99d533a59f22242a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aba3b127ac7c7bd3d99d533a59f22242a">&#9670;&nbsp;</a></span>linear() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::linear </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a37ca518be694a545a9572a3e5546e9e8">Mat3</a> &amp;&#160;</td>
          <td class="paramname"><em>L</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Copy the 3x3 matrix L to the upper left part of the current matrix</p>
<p>It sets the upper left 3x3 part of the matrix. The remaining part is unaffected.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">L</td><td>3x3 matrix. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a914f41895b8a246232db4a186b70d480"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a914f41895b8a246232db4a186b70d480">&#9670;&nbsp;</a></span>linear() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a37ca518be694a545a9572a3e5546e9e8">Mat3</a> <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::linear </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the upper left 3x3 part </dd></dl>

</div>
</div>
<a id="a5828e816d1b22aef71ddacbdd364f68e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5828e816d1b22aef71ddacbdd364f68e">&#9670;&nbsp;</a></span>operator Affine3< Y >()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
<div class="memtemplate">
template&lt;typename Y &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::operator <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">Affine3</a>&lt; Y &gt; </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a990d571a479b9b336f30c259fb74d18c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a990d571a479b9b336f30c259fb74d18c">&#9670;&nbsp;</a></span>rotate() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html">Affine3</a> <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::rotate </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a37ca518be694a545a9572a3e5546e9e8">Mat3</a> &amp;&#160;</td>
          <td class="paramname"><em>R</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>a.rotate(R) is equivalent to Affine(R, 0) * a; </p>

</div>
</div>
<a id="a771e0532e18299b79c922ddf77f2e362"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a771e0532e18299b79c922ddf77f2e362">&#9670;&nbsp;</a></span>rotate() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html">Affine3</a> <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::rotate </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ab44b397d8cb04e63556cae820ffdb914">Vec3</a> &amp;&#160;</td>
          <td class="paramname"><em>rvec</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>a.rotate(rvec) is equivalent to Affine(rvec, 0) * a; </p>

</div>
</div>
<a id="ae264b90743372dac60643984ebed342e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae264b90743372dac60643984ebed342e">&#9670;&nbsp;</a></span>rotation() <span class="overload">[1/4]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::rotation </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a37ca518be694a545a9572a3e5546e9e8">Mat3</a> &amp;&#160;</td>
          <td class="paramname"><em>R</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Rotation matrix.</p>
<p>Copy the rotation matrix to the upper left 3x3 part of the current matrix. The remaining elements of the current matrix are not changed.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">R</td><td>3x3 rotation matrix. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="acfe7474211770799f56deb8b81d829f5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acfe7474211770799f56deb8b81d829f5">&#9670;&nbsp;</a></span>rotation() <span class="overload">[2/4]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::rotation </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ab44b397d8cb04e63556cae820ffdb914">Vec3</a> &amp;&#160;</td>
          <td class="paramname"><em>rvec</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Rodrigues vector.</p>
<p>It sets the upper left 3x3 part of the matrix. The remaining part is unaffected.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">rvec</td><td>3x1 rotation vector. The direction indicates the rotation axis and its length indicates the rotation angle in radian (using the right thumb convention). </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a755e92ce3d3af6e8599b2032a2c7ea05"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a755e92ce3d3af6e8599b2032a2c7ea05">&#9670;&nbsp;</a></span>rotation() <span class="overload">[3/4]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::rotation </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../d3/d63/classcv_1_1Mat.html">Mat</a> &amp;&#160;</td>
          <td class="paramname"><em>data</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Combines rotation methods above. Supports 3x3, 1x3, 3x1 sizes of data matrix.</p>
<p>It sets the upper left 3x3 part of the matrix. The remaining part is unaffected.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">data</td><td>1-channel matrix. When it is a 3x3 matrix, it sets the upper left 3x3 part of the current matrix. When it is a 1x3 or 3x1 matrix, it is used as a rotation vector. The Rodrigues formula is used to compute the rotation matrix and sets the upper left 3x3 part of the current matrix. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a6a6b70508a7d7fd7725696852da7a20c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6a6b70508a7d7fd7725696852da7a20c">&#9670;&nbsp;</a></span>rotation() <span class="overload">[4/4]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a37ca518be694a545a9572a3e5546e9e8">Mat3</a> <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::rotation </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the upper left 3x3 part </dd></dl>

</div>
</div>
<a id="a2b55e155790f606db5eb913bd350645b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2b55e155790f606db5eb913bd350645b">&#9670;&nbsp;</a></span>rvec()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ab44b397d8cb04e63556cae820ffdb914">Vec3</a> <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::rvec </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Rodrigues vector. </p><dl class="section return"><dt>Returns</dt><dd>a vector representing the upper left 3x3 rotation matrix of the current matrix. </dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>Since the mapping between rotation vectors and rotation matrices is many to one, this function returns only one rotation vector that represents the current rotation matrix, which is not necessarily the same one set by <code><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#acfe7474211770799f56deb8b81d829f5">rotation(const Vec3&amp; rvec)</a></code>. </dd></dl>

</div>
</div>
<a id="a11d9cdc588a9c08c0c1c205a872663fd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a11d9cdc588a9c08c0c1c205a872663fd">&#9670;&nbsp;</a></span>translate()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html">Affine3</a> <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::translate </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ab44b397d8cb04e63556cae820ffdb914">Vec3</a> &amp;&#160;</td>
          <td class="paramname"><em>t</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>a.translate(t) is equivalent to Affine(E, t) * a, where E is an identity matrix </p>

</div>
</div>
<a id="af0df7115f87f425839a7a3f2e4e1ed17"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af0df7115f87f425839a7a3f2e4e1ed17">&#9670;&nbsp;</a></span>translation() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::translation </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ab44b397d8cb04e63556cae820ffdb914">Vec3</a> &amp;&#160;</td>
          <td class="paramname"><em>t</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Copy t to the first three elements of the last column of the current matrix</p>
<p>It sets the upper right 3x1 part of the matrix. The remaining part is unaffected.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">t</td><td>3x1 translation vector. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a id="a19e2decf4df4a6e72118f9ef6482d502"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a19e2decf4df4a6e72118f9ef6482d502">&#9670;&nbsp;</a></span>translation() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#ab44b397d8cb04e63556cae820ffdb914">Vec3</a> <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::translation </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the upper right 3x1 part </dd></dl>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="ad122a1f67e7b1d20fd2cb511f2fe7d5d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad122a1f67e7b1d20fd2cb511f2fe7d5d">&#9670;&nbsp;</a></span>matrix</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dd/d99/classcv_1_1Affine3.html#a9466d60cebb8d94b8bf23e52aa89b95b">Mat4</a> <a class="el" href="../../dd/d99/classcv_1_1Affine3.html">cv::Affine3</a>&lt; T &gt;::matrix</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>opencv2/core/<a class="el" href="../../de/d48/affine_8hpp.html">affine.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.8.6-->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Apr 2 2021 11:36:42 for OpenCV by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="../../doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
<script type="text/javascript">
//<![CDATA[
addTutorialsButtons();
//]]>
</script>
</body>
</html>
